-- note down SADDR and P1RAW from the following query
select  s.sid, s.saddr, sw.p1raw
     from gv$session_wait sw, gv$session s
     where sw.sid = s.sid and sw.event='library cache pin';

-- use previous SADDR and P1RAW and note down KGLLKUSE
select b.KGLLKUSE from dba_kgllock w , dba_kgllock b
     where w.KGLLKHDL  = b.KGLLKHDL
     and   w.KGLLKREQ  > 0 and b.KGLLKMOD > 0
     and   w.KGLLKTYPE = b.KGLLKTYPE
     and   w.KGLLKUSE  = '000000025C47A5F0' -- SADDR
     and   w.KGLLKHDL  = '000000008AEE0AB8' -- P1RAW
;

-- use previous KGLLKUSE to find the SID
select sid from gv$session s
     where saddr in ('000000025DEC3278');

-- use previous SID to find session detail
select
    i.instance_name     instance_name
  , s.sid               sid
  , s.serial#           serial_id
  , s.status            session_status
  , s.username          oracle_username
  , s.osuser            os_username
  , p.spid              os_pid
  , s.terminal          session_terminal
  , s.machine           session_machine
  , s.program           session_program
from
             gv$session  s
  inner join gv$process  p on (s.paddr = p.addr and s.inst_id = p.inst_id)
  inner join gv$instance i on (p.inst_id = i.inst_id)
where
  s.sid in (516);
